trivial-httpd: flush after writing the port to stdout
authorOwen W. Taylor <otaylor@fishsoup.net>
Mon, 5 May 2014 22:58:01 +0000 (18:58 -0400)
committerOwen W. Taylor <otaylor@fishsoup.net>
Mon, 5 May 2014 23:02:59 +0000 (19:02 -0400)
The option --port-file=- is most useful when the stdout of the daemon
is programatically redirected and not going to a terminal. The
flush-after-a-line behavior of stdout is specific to terminals, so
we need an explicit flush.

https://bugzilla.gnome.org/show_bug.cgi?id=729609

src/ostree/ot-builtin-trivial-httpd.c

index 0689a3cb24d5366cce3ece0cc233fc14635b9ad4..4cfc4b4773cb9de15f8be75f78cdccbae84cb254 100644 (file)
@@ -353,7 +353,10 @@ ostree_builtin_trivial_httpd (int argc, char **argv, OstreeRepo *repo, GCancella
     {
       gs_free char *portstr = g_strdup_printf ("%u\n", soup_server_get_port (server));
       if (g_strcmp0 ("-", opt_port_file) == 0)
-        fputs (portstr, stdout); // not g_print - this must go to stdout, not a handler
+        {
+          fputs (portstr, stdout); // not g_print - this must go to stdout, not a handler
+          fflush (stdout);
+        }
       else if (!g_file_set_contents (opt_port_file, portstr, strlen (portstr), error))
         goto out;
     }